package com.xdcplus.web.service.wip;

import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.dto.wip.WipMarkingDTO;
import com.xdcplus.web.common.pojo.dto.wip.WipMarkingFilterDTO;
import com.xdcplus.web.common.pojo.entity.wip.WipMarking;
import com.xdcplus.web.common.pojo.vo.wip.WipMarkingRecordVO;
import com.xdcplus.web.common.pojo.vo.wip.WipMarkingReportVO;
import com.xdcplus.web.common.pojo.vo.wip.WipMarkingVO;

import java.util.List;
import java.util.Map;


/**
 * 打标管理表(WipMarking)表服务接口层
 *
 * @author Devin.sang
 * @since 2023-05-15 22:05:44
 */
public interface WipMarkingService extends BaseService<WipMarking, WipMarking, WipMarkingVO> {

    /**
     * 添加打标管理表(WipMarking)
     *
     * @param wipMarkingDTO 打标管理表(WipMarkingDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveWipMarking(WipMarkingDTO wipMarkingDTO);

    /**
     * 修改打标管理表(WipMarking)
     *
     * @param wipMarkingDTO 打标管理表(WipMarkingDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updateWipMarking(WipMarkingDTO wipMarkingDTO);

    /**
     * 批量保存或更新打标管理表(WipMarking)
     *
     * @param wipMarkingList 打标管理表(WipMarkingList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatch(List<WipMarking> wipMarkingList);

    /**
     * 批量保存或更新打标管理表(WipMarkingDTOList)
     *
     * @param wipMarkingDTOList 打标管理表(WipMarkingDTOList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatchByDTOList(List<WipMarkingDTO> wipMarkingDTOList);

    /**
     * 删除打标管理表(WipMarking)
     *
     * @param id 打标管理表(WipMarking)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deleteWipMarkingLogical(Long id);
    
    Boolean deleteWipMarkingByIds(String ids);

    /**
     * 查询打标管理表(WipMarking)
     *
     * @param wipMarkingFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<WipMarkingVO>} 状态信息
     */
    List<WipMarkingVO> queryWipMarkingVOList(WipMarkingFilterDTO wipMarkingFilterDTO);

    /**
     * 查询打标管理表(WipMarking)
     *
     * @param wipMarkingFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<WipMarkingVO>} 状态信息
     */
    PageVO<WipMarkingVO> queryWipMarking(WipMarkingFilterDTO wipMarkingFilterDTO);

    /**
     * 查询一个
     *
     * @param id 打标管理表(WipMarking)主键
     * @return {@link WipMarkingVO} 打标管理表(WipMarking)信息
     */
    WipMarkingVO queryWipMarkingById(Long id);

    /**
    * @Description markig结批
    * @Author Devin.sang
    * @Date  2023/5/16 19:53
    */
    void closeBatchForMarking(Long markingId);

    Object markingReport(Long wipMarkingId);

    /**
     * 查询结批报告
     * @param wipMarkingId
     * @return
     *
     * */
    Map<String, Object> queryMarkingReport(Long wipMarkingId);

    List<WipMarkingRecordVO> queryWipMarkingFlow(Long wipMarkingId);


}
